home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 2: CDPD 1 / Almathera Ten on Ten - Disc 2: CDPD 1.iso / pd / 176-200 / 190 / nethack / een.zoo / objclass.h < prev    next >
C/C++ Source or Header  |  1988-07-24  |  2KB  |  71 lines

  1. /*    SCCS Id: @(#)objclass.h 2.3     88/01/24
  2. /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  3.  
  4. /* definition of a class of objects */
  5.  
  6. struct objclass {
  7.     char *oc_name;        /* actual name */
  8.     char *oc_descr;     /* description when name unknown */
  9.     char *oc_uname;     /* called by user */
  10.     Bitfield(oc_name_known,1);
  11.     Bitfield(oc_merge,1);   /* merge otherwise equal objects */
  12.     char oc_olet;
  13.     schar oc_prob;        /* probability for mkobj() */
  14.     schar oc_delay;     /* delay when using such an object */
  15.     uchar oc_weight;
  16.     schar oc_oc1, oc_oc2;
  17.     int oc_oi;
  18. #define nutrition    oc_oi    /* for foods */
  19. #define a_ac        oc_oc1    /* for armors - only used in ARM_BONUS */
  20. #define ARM_BONUS(obj)  ((10 - objects[obj->otyp].a_ac) + obj->spe)
  21. #define a_can        oc_oc2    /* for armors */
  22. #define bits        oc_oc1    /* for wands and rings */
  23.                 /* wands */
  24. #define     NODIR        1
  25. #define     IMMEDIATE    2
  26. #define     RAY        4
  27.                 /* rings */
  28. #define     SPEC        1    /* +n is meaningful */
  29.   /* Check the AD&D rules!  The FIRST is small monster damage. */
  30. #define wsdam        oc_oc1    /* for weapons and PICK_AXE */
  31. #define wldam        oc_oc2    /* for weapons and PICK_AXE */
  32.  
  33. #define g_val        oc_oi    /* for gems: value on exit */
  34.  
  35. #ifdef SPELLS
  36. #define spl_lev     oc_oi    /* for books: spell level */
  37. #endif
  38. };
  39.  
  40. extern struct objclass objects[];
  41.  
  42. /* definitions of all object-symbols */
  43.  
  44. #define RANDOM_SYM    '\0'    /* used for generating random objects */
  45. #define ILLOBJ_SYM    '\\'
  46. #define AMULET_SYM    '"'
  47. #define FOOD_SYM    '%'
  48. #define WEAPON_SYM    ')'
  49. #define TOOL_SYM    '('
  50. #define BALL_SYM    '0'
  51. #define CHAIN_SYM    '_'
  52. #define ROCK_SYM    '`'
  53. #define ARMOR_SYM    '['
  54. #define POTION_SYM    '!'
  55. #define SCROLL_SYM    '?'
  56. #define WAND_SYM    '/'
  57. #define RING_SYM    '='
  58. #define GEM_SYM     '*'
  59. #define GOLD_SYM    '$'
  60. #ifdef SPELLS
  61. #define SPBOOK_SYM    '+'     /* actually SPELL-book */
  62. #endif
  63. /* Other places with explicit knowledge of object symbols:
  64.  * mklev.c:    "=/)%?![<>+"    (used for calculating Amulet apperances)
  65.  * mkobj.c:    char mkobjstr[] = "))[[!!!!????%%%%/=**+";
  66.  * apply.c:   otmp = getobj("0#%", "put in");
  67.  * eat.c:     otmp = getobj("%", "eat");
  68.  * invent.c:          if(index("!%?[)=*(0/+\"", sym)){
  69.  * invent.c:    || index("%?!*+",otmp->olet))){
  70.  */
  71.